In packet-switching systems, e.g. ATM systems, several users are connected via one or more ATM switches. The users exchange information which is transmitted in form of fixed-size packets, also called cells. Since the ATM switch is limited in its capacity to handle cells without loss of information and required to avoid loss of information for certain connections, the cell rate or bandwidth which is allowed to reach the switch is limited. In some ATM systems all users are assigned an equal share of the totally available bandwidth as maximum bandwidth; in other systems users can get different shares assigned. In ATM switches with ABR (Available Bit Rate) service, the unused bandwidth is distributed over the ABR-connections.
Determining the actually used bandwidth is an important aspect for such systems since a deviation from an assigned maximum bandwidth can have various effects: Users may be confronted with additional fees for their assigned bandwidth limit being exceeded. Furthermore, free, unused bandwidth may be at least temporarily assigned to a user who exceeds his assigned bandwidth limit. Finally, queues for arriving cells need to be adapted to the used bandwidth. For all these actions, a precise determination of used bandwidth is of importance.
Two methods are known for determining the actually used bandwidth on a connection.
A first method uses an arrangement that counts the number of arriving cells for a fixed amount of time. The problem is that usually with this method one counter and one timer for each connection is to be established. Furthermore, particularly in the realistic case of a big number of connections, many results of many counting processes have to be stored in very short time, even when less timers are provided. In worst case this may even be simultaneously. Such storage mechanism requires an appropriate provision of reliable and fast resources. This leads to expensive arrangements which still may have only limited capacity. Also, a huge amount of data is to be stored even if no cell traffic is pertinent. Another point is that the timers need to be accessed by two asynchronous processes, namely the cell-receiving process to increment the counter and a timer-based process to set the counter to zero and to read out its value. Such a twofold asynchronously controllable timer needs to be realized with a dual-port RAM which is more expensive than a single port RAM for only one asynchronous access. Also, a queuing mechanism must be implemented between the timer expiration process and the dual-port RAM containing the counters for the case when several timers expire at the same time. This again can only be avoided by providing additional, expensive hardware.
A second method counts a fixed number of cells and measures the elapsed time for these cells. It is here more probable that the storing processes when the number of cells is reached for several connections, do not occur simultaneously. A problem occurs when the number of sent cells remains below the fixed number or if the cell rate falls from a high value to a very low value during a counting process. Then the counting process does not get to an end and no terminating event stops the counting or it takes a very long time until the counting process reaches the fixed number of cells. If this happens, the last value that was used to determine the used bandwidth does no longer represent the correct value of the used bandwidth.